//
//  HHPSecure.h
//
//  Created by 韩红坡 on 2016/12/24.
//  Copyright © 2016年 韩红坡. All rights reserved.
//
// 使用默认publickey  需要将RSA公钥文件命名为"rsa_public_key.pem" 放入项目中
//

#import <Foundation/Foundation.h>

@interface HHPSecure : NSObject

#pragma mark - RSA+AES加解密
/**
 *  加密字典(默认publickey)
 *
 *  @param dict      需要加密的字典数据
 * （RSA+AES加密）
 *  @return NSDictionary
 */
+ (NSDictionary *)encryptAESDictionary:(NSDictionary *)dict;
/**
 *  加密字典(默认publickey)
 * （RSA加密）
 *  @param dict      需要加密的字典数据
 *
 *  @return NSDictionary
 */
+ (NSDictionary *)encryptDictionary:(NSDictionary *)dict;
/**
 *  加密字符串(默认publickey)
 * （RSA加密）
 *  @param str      需要加密的字符串
 *
 *  @return str
 */
+ (NSString *)encryptString:(NSString *)str;
/**
 *  解密字符串
 * （AES解密）
 *  @param str      需要解密的字符串
 *  @param fixedString 16位固定字符串
 *  @param randomString 16位随机字符串（这个是服务器响应的）
 *  @return str
 */
+ (NSString *)decryptString:(NSString *)str withFixedString:(NSString *)fixedString withRandomString:(NSString *)randomString;
/**
 *  加密字典（RSA加密）
 *
 *  @param dict      需要加密的字典数据
 *  @param publicKey 公钥
 *
 *  @return NSDictionary
 */
+ (NSDictionary *)encryptDictionary:(NSDictionary *)dict withPublicKey:(NSString *)publicKey;
/**
 *  加密字典（RSA+AES加密）
 *
 *  @param dict      需要加密的字典数据
 *  @param publicKey 公钥
 *
 *  @return NSDictionary
 */
+ (NSDictionary *)encryptAESDictionary:(NSDictionary *)dict withPublicKey:(NSString *)publicKey;
/**
 *  加密字符串（RSA加密）
 *
 *  @param str      需要加密的字符串
 *  @param publicKey 公钥
 *
 *  @return str
 */
+ (NSString *)encryptString:(NSString *)str withPublicKey:(NSString *)publicKey;

#pragma mark - AES加解密
/**
 *  加密字典（AES加密）
 *
 *  @param dict      需要加密的字典数据
 *  @param key      32位AES秘钥
 *
 *  @return NSString
 */
+ (NSString *)encryptDictionary:(NSDictionary *)dict withAESKey:(NSString *)key;

/**
 *  加密字符串（AES加密）
 *
 *  @param dict      需要加密的字典数据
 *  @param key      32位AES秘钥
 *
 *  @return NSString
 */
+ (NSString *)encryptString:(NSString *)string withAESKey:(NSString *)key;

/**
 *  解密字典（AES加密）
 *
 *  @param encryptString      需要解密的字符串
 *  @param key      32位AES秘钥
 *
 *  @return NSString
 */
+ (NSString *)decryptString:(NSString *)encryptString withAESKey:(NSString *)key;

/**
 *  解密字典（AES加密）
 *
 *  @param encryptString      需要解密的字符串
 *  @param key      32位AES秘钥
 *
 *  @return NSString
 */
+ (NSDictionary *)decryptDictString:(NSString *)encryptDictString withAESKey:(NSString *)key;



@end
